-- $LastChangedDate: 2007-06-01 02:52:33 +0200 (Fri, 01 Jun 2007) $
-- $LastChangedRevision: 149 $
-- $LastChangedBy: vicente $

-- packages de ada
with Ada.Text_Io;
use Ada.Text_Io;
with Ada.Task_Identification;
use Ada.Task_Identification;

with Ada.Strings.Fixed;

package body Tareas is

   function Pad (
         Header : in     String;
         Size   :        Positive := Integer'Width)
     return String is
      use      Ada.Strings,
      Ada.Strings.Fixed;
      Result            : String (1 .. Size);
   begin
      Move(
         Source  => Header,
         Target  => Result,
         Drop    => Right,
         Justify => Left,
         Pad     => Space);
      return Result;
   end Pad;

   procedure Print (
         S : in     String) is
   begin
      if Debug then
         Put_Line(Pad(Image(Current_Task), 20) & ": " & S);
      end if;
   end Print;

   procedure Print_Term (
         S : in     String) is
   begin
      -- imprime incondicionalmente de modo debug
      Put_Line(Pad(Image(Current_Task), 20) & ": " & S);
   end Print_Term;

   function "&" (
         Left  : String;
         Right : Ejerciciotype)
     return String is
   begin
      case Right is
         when Ejercicio1 =>
            return Left & "Ejercicio1";
         when Ejercicio2 =>
            return Left & "Ejercicio2";
         when Ejercicio3 =>
            return Left & "Ejercicio3";
         when Ejercicio4 =>
            return Left & "Ejercicio4";
         when Ejercicio5 =>
            return Left & "Ejercicio5";
         when Ejercicio6 =>
            return Left & "Ejercicio6";
         when Ejercicio7 =>
            return Left & "Ejercicio7";
         when Ejercicio8 =>
            return Left & "Ejercicio8";
         when Sinejercicio =>
            return Left & "Sin Ejercicio";
      end case;
   end "&";

   function "&" (
         Left  : String;
         Right : Tipomedicion)
     return String is
   begin
      case Right is
         when Muy_Bajo =>
            return Left & "Muy bajo";
         when Bajo =>
            return Left & "Bajo";
         when Normal =>
            return Left & "Normal";
         when Alto =>
            return Left & "Alto";
         when Muy_Alto =>
            return Left & "Muy alto";
      end case;
   end "&";

end Tareas;
